home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_03 / pjp / sstream < prev    next >
Text File  |  1995-02-01  |  2KB  |  58 lines

  1. ------------- Listing 1: The header <<sstream>> ------------------
  2.  
  3. // sstream standard header
  4. #ifndef _SSTREAM_
  5. #define _SSTREAM_
  6. #include <<string>>
  7. #include <<strstream>>
  8.                 // class stringbuf
  9. class stringbuf : public strstreambuf {
  10. public:
  11.         stringbuf(ios::openmode _W = ios::in | ios::out)
  12.                 : strstreambuf(0, 0, 0, _Mode(_W)) {}
  13.         stringbuf(const string& _S,
  14.                 ios::openmode _W = ios::in | ios::out)
  15.                 : strstreambuf((char *)_S.c_str(), _S.length(), 0,
  16.                         _Mode(_W)) {}
  17.         virtual ~stringbuf();
  18.         string str() const;
  19.         void str(const string& _S);
  20. protected:
  21.         _Strstate _Mode(ios::openmode);
  22.         };
  23.                 // class istrstream
  24. class istringstream : public istream {
  25. public:
  26.         istringstream(openmode _W = in)
  27.                 : istream(&_Sb), _Sb(_W) {}
  28.         istringstream(const string& _S, openmode _W = in)
  29.                 : istream(&_Sb), _Sb(_S, _W) {}
  30.         virtual ~istringstream();
  31.         stringbuf *rdbuf() const
  32.                 {return ((stringbuf *)&_Sb); }
  33.         string str() const
  34.                 {return (_Sb.str()); }
  35.         void str(const string& _S)
  36.                 {_Sb.str(_S); }
  37. private:
  38.         stringbuf _Sb;
  39.         };
  40.                 // class ostrstream
  41. class ostringstream : public ostream {
  42. public:
  43.         ostringstream(openmode _W = out)
  44.                 : ostream(&_Sb), _Sb(_W) {}
  45.         ostringstream(const string& _S, openmode _W = out)
  46.                 : ostream(&_Sb), _Sb(_S, _W) {}
  47.         virtual ~ostringstream();
  48.         stringbuf *rdbuf() const
  49.                 {return ((stringbuf *)&_Sb); }
  50.         string str() const
  51.                 {return (_Sb.str()); }
  52.         void str(const string& _S)
  53.                 {_Sb.str(_S); }
  54. private:
  55.         stringbuf _Sb;
  56.         };
  57. #endif /* _SSTREAM_ */
  58.